package com.kk.demo.meilin.load;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
import java.util.Properties;

/**
 * 税率加载
* 源文件名：TaxRuteLoad.java
* 文件版本：1.0.0
* 创建作者：liujun
* 创建日期：2016年10月8日
* 修改作者：liujun
* 修改日期：2016年10月8日
* 文件描述：TODO
* 版权所有：Copyright 2016 zjhz, Inc. All Rights Reserved.
*/
public class TaxRuteLoad {

    private static final String FilePath = "tax/tax.properties";

    /**
     * 加载税的信息
    * @字段说明 taxRute
    */
    private static List<PeopleTaxRute> taxRute = new ArrayList<>();

    /**
     * 加载税的信息
    * 方法描述
    * @param load
    * @创建日期 2016年10月8日
    */
    @SuppressWarnings({ "unchecked", "rawtypes" })
    private static void loadTax(boolean load) {
        if (taxRute.isEmpty() || load) {

            InputStream input = TaxRuteLoad.class.getClassLoader().getResourceAsStream(FilePath);

            if (null != input) {

                taxRute.clear();

                Properties perties = new Properties();

                try {
                    perties.load(input);
                } catch (IOException e) {
                    e.printStackTrace();
                }

                PeopleTaxRute peoTax = null;

                for (Iterator iterator = perties.entrySet().iterator(); iterator.hasNext();) {
                    Entry<String, String> type = (Entry<String, String>) iterator.next();

                    String[] valTmp = type.getKey().split(",");

                    if (valTmp != null && valTmp.length == 4) {
                        if (valTmp[1].equals("max")) {
                            peoTax = new PeopleTaxRute(Float.parseFloat(valTmp[0]), Float.MAX_VALUE,
                                    Float.parseFloat(valTmp[2]), Float.parseFloat(valTmp[3]));
                        } else {
                            peoTax = new PeopleTaxRute(Float.parseFloat(valTmp[0]), Float.parseFloat(valTmp[1]),
                                    Float.parseFloat(valTmp[2]), Float.parseFloat(valTmp[3]));
                        }
                    }

                    taxRute.add(peoTax);
                }
            }
        }

    }

    /**
     * 加载税率的相关信息
    * 方法描述
    * @param scopeValue
    * @return
    * @创建日期 2016年10月8日
    */
    public static PeopleTaxRute getTaxRute(float scopeValue) {
        // 加载税的相关信息
        loadTax(false);

        if (null != taxRute) {
            for (PeopleTaxRute rute : taxRute) {
                if (rute.getStart() <= scopeValue && scopeValue <= rute.getEnd()) {
                    return rute;
                }
            }
        }
        return null;
    }

}
